<?php
declare(strict_types=1);

namespace App\Common\Event;

use Hyperf\Framework\Bootstrap\ServerStartCallback;

class HyperfEvent extends ServerStartCallback
{
    /**
     * 进程启动时执行事件
     * @return void
     */
    public function onBeforeStart(): void
    {
        $this->syncUpdateExampleEnvFile();
    }


    /**
     * @describe 同步更新.env配置项到.env.example
     * @user zlf <zms-pro@qq.com> 2025/3/14
     * @return void
     */
    protected function syncUpdateExampleEnvFile(): void
    {
        $env_fiel = BASE_PATH . '/.env';
        $env_example_fiel = BASE_PATH . '/.env.example';

        //没有配置文件就跳过
        if (!file_exists($env_fiel)) {
            return;
        }
        // 读取文件内容并处理每一行
        $fileContent = file($env_fiel, FILE_IGNORE_NEW_LINES);
        $output = '';
        foreach ($fileContent as $line) {
            // 跳过注释行和空行
            if (str_starts_with($line, '#') || trim($line) === '') {
                $output .= $line . "\r\n";
                continue;
            }
            // 分割键值对
            list($key, $value) = explode('=', $line, 2) + [1 => ''];
            // 移除值，保留键
            $output .= $key . '=' . "\r\n";
        }
        // 输出结果
        file_put_contents($env_example_fiel, $output);
    }
}